package com.xuetang.common;

import java.io.Serializable;

/**
 * API统一响应结构
 */
public class ApiResponse implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 状态码，0表示成功，非0表示失败
     */
    private int code;

    /**
     * 响应消息
     */
    private String message;

    /**
     * 响应数据
     */
    private Object data;

    /**
     * 成功响应
     */
    public static ApiResponse success() {
        return new ApiResponse(0, "操作成功", null);
    }

    /**
     * 成功响应（带数据）
     */
    public static ApiResponse success(Object data) {
        return new ApiResponse(0, "操作成功", data);
    }

    /**
     * 成功响应（带消息和数据）
     */
    public static ApiResponse success(String message, Object data) {
        return new ApiResponse(0, message, data);
    }

    /**
     * 失败响应
     */
    public static ApiResponse error(String message) {
        return new ApiResponse(500, message, null);
    }

    /**
     * 失败响应（带状态码）
     */
    public static ApiResponse error(int code, String message) {
        return new ApiResponse(code, message, null);
    }

    /**
     * 失败响应（带状态码和数据）
     */
    public static ApiResponse error(int code, String message, Object data) {
        return new ApiResponse(code, message, data);
    }

    public ApiResponse() {
    }

    public ApiResponse(int code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}